Spring Data JPA ডেটাবেস কুয়েরি তৈরি করার জন্য একটি শক্তিশালী এবং নমনীয় পদ্ধতি সরবরাহ করে যা Method Naming Convention ব্যবহার করে কাস্টম কুয়েরি তৈরি করতে সাহায্য করে। Spring Data JPA রেপোজিটরি ইন্টারফেসের মেথডের নাম অনুসারে কুয়েরি তৈরি করে, যার মাধ্যমে SQL কুয়েরি লিখতে হয় না। Spring Data JPA স্বয়ংক্রিয়ভাবে মেথডের নামের উপর ভিত্তি করে ডেটাবেস কুয়েরি তৈরি করে।
Method Naming Convention-এর মূল ধারণা
Spring Data JPA মেথডের নামের ভিত্তিতে কুয়েরি তৈরি করার জন্য কিছু নিয়ম অনুসরণ করে। এই নিয়মের মধ্যে find, read, get, count, exists, delete এবং update এর মতো কীওয়ার্ড ব্যবহার করা হয়। মেথডের নামের বিভিন্ন অংশ ডেটাবেসের টেবিলের কলামের নামের সাথে মেলানো হয়।
মেথড নামের সাধারণ গঠন:
- findBy – নির্দিষ্ট প্রপার্টি অনুসারে ডেটা খুঁজতে।
- findAllBy – সমস্ত রেকর্ড খুঁজতে একটি নির্দিষ্ট প্রপার্টি অনুযায়ী।
- countBy – একটি নির্দিষ্ট প্রপার্টি অনুসারে রেকর্ডের সংখ্যা গোনার জন্য।
- existsBy – নির্দিষ্ট শর্ত অনুসারে রেকর্ডের অস্তিত্ব যাচাই করার জন্য।
- deleteBy – নির্দিষ্ট প্রপার্টি অনুসারে রেকর্ড মুছে ফেলতে।
Custom Query তৈরি করার জন্য Method Naming Convention
Spring Data JPA-তে কাস্টম কুয়েরি তৈরি করতে method name এবং keywords ব্যবহার করা হয়। মেথড নামের মধ্যে কীওয়ার্ড এবং প্রপার্টি নাম ঠিকভাবে ব্যবহার করলে JPA সঠিক কুয়েরি তৈরি করতে পারে।
১. findBy Keyword ব্যবহার করা
findBy কীওয়ার্ডের সাহায্যে Spring Data JPA একটি কুয়েরি তৈরি করবে যা নির্দিষ্ট প্রপার্টির মান অনুসারে ডেটা খুঁজবে।
উদাহরণ:
public interface EmployeeRepository extends JpaRepository<Employee, Long> {
// findBy + property name
List<Employee> findByPosition(String position);
}
এখানে, findByPosition মেথডটি Employee টেবিলের position কলাম অনুযায়ী সকল Employee রেকর্ড খুঁজে বের করবে।
২. findBy এবং Multiple Properties ব্যবহার করা
একাধিক প্রপার্টি দিয়ে কুয়েরি তৈরি করার জন্য, মেথডের নামের মধ্যে And ব্যবহার করা হয়।
public interface EmployeeRepository extends JpaRepository<Employee, Long> {
// findBy + property1 + And + property2
List<Employee> findByNameAndPosition(String name, String position);
}
এখানে, findByNameAndPosition মেথডটি name এবং position কলাম দুটোকে একসাথে ব্যবহার করে ডেটা রিটার্ন করবে।
৩. findBy এবং Multiple Properties with OR Condition
যদি OR শর্ত ব্যবহার করতে চান, তবে Or কীওয়ার্ড ব্যবহার করা যায়।
public interface EmployeeRepository extends JpaRepository<Employee, Long> {
// findBy + property1 + Or + property2
List<Employee> findByNameOrPosition(String name, String position);
}
এখানে, findByNameOrPosition মেথডটি name অথবা position কলাম অনুযায়ী ডেটা রিটার্ন করবে।
৪. findBy এবং Sorting
Spring Data JPA-তে findBy মেথডের মাধ্যমে সর্টিংও করা যায়। Sort ক্লাস ব্যবহার করে ডেটা অর্ডার করা যায়।
public interface EmployeeRepository extends JpaRepository<Employee, Long> {
// findBy + property + Order By (sorting)
List<Employee> findByPositionOrderByNameAsc(String position);
}
এখানে, findByPositionOrderByNameAsc মেথডটি position কলামের ভিত্তিতে ডেটা খুঁজে বের করবে এবং name কলাম অনুযায়ী Ascending (অর্থাৎ A-Z) অর্ডারে সাজানো থাকবে।
৫. countBy Keyword ব্যবহার করা
countBy কীওয়ার্ড ব্যবহার করে আপনি নির্দিষ্ট শর্তে রেকর্ডের সংখ্যা বের করতে পারেন।
public interface EmployeeRepository extends JpaRepository<Employee, Long> {
// countBy + property
long countByPosition(String position);
}
এখানে, countByPosition মেথডটি position কলামের ভিত্তিতে Employee টেবিলের রেকর্ডের সংখ্যা গণনা করবে।
৬. existsBy Keyword ব্যবহার করা
existsBy কীওয়ার্ডটি ব্যবহার করে আপনি ডেটাবেসে কোনো রেকর্ডের অস্তিত্ব পরীক্ষা করতে পারেন।
public interface EmployeeRepository extends JpaRepository<Employee, Long> {
// existsBy + property
boolean existsByName(String name);
}
এখানে, existsByName মেথডটি name কলামের ভিত্তিতে Employee টেবিলের কোনো রেকর্ডের অস্তিত্ব পরীক্ষা করবে।
৭. deleteBy Keyword ব্যবহার করা
deleteBy কীওয়ার্ডটি দিয়ে আপনি একটি নির্দিষ্ট প্রপার্টির ভিত্তিতে ডেটা মুছে ফেলতে পারেন।
public interface EmployeeRepository extends JpaRepository<Employee, Long> {
// deleteBy + property
void deleteByPosition(String position);
}
এখানে, deleteByPosition মেথডটি position কলামের ভিত্তিতে সকল Employee রেকর্ড মুছে ফেলবে।
Method Naming Convention এর সুবিধা
- No need for Custom Queries: Method Naming Convention ব্যবহার করে JPA-র স্বয়ংক্রিয়ভাবে কুয়েরি তৈরি করা যায়, ফলে কোডে কাস্টম SQL কুয়েরি লেখার প্রয়োজন পড়ে না।
- Readable and Understandable: মেথডের নামের মাধ্যমে কুয়েরি কি করবে তা স্পষ্ট হয়, যা কোডের রিডেবিলিটি উন্নত করে।
- Less Boilerplate Code: Spring Data JPA অটোমেটিকভাবে কুয়েরি তৈরি করে, ফলে ডেভেলপারকে কম কোড লিখতে হয়।
- Integration with Spring Features: এটি Spring Framework-এর অন্যান্য বৈশিষ্ট্যের সাথে খুব সহজে ইন্টিগ্রেট করা যায়, যেমন পেজিনেশন, সর্টিং, ট্রানজ্যাকশন ম্যানেজমেন্ট ইত্যাদি।
সারাংশ
Spring Data JPA-তে Method Naming Convention ব্যবহার করে কাস্টম কুয়েরি তৈরি করা খুবই সহজ এবং কার্যকরী। ডেটাবেসের ডেটা খোঁজা, গোনা, মুছে ফেলা, এবং অস্তিত্ব যাচাই করার জন্য এই পদ্ধতি ব্যবহৃত হয়, যেখানে মেথড নামের ভিত্তিতে Spring Data JPA কুয়েরি তৈরি করে। এটি ডেভেলপারদের জন্য একটি সুবিধাজনক এবং কোডের পরিমাণ কমানোর উপায়।
Read more